package util;

public abstract class Entity {

	public abstract Long getId();

	public abstract void setId(Long id);

	public Object get(String nameOfAttribute) throws Exception {
		try {
			return getClass().getMethod(
					"get" + StringUtil.firstToUpper(nameOfAttribute)).invoke(
					this);
		} catch (Exception e) {
			throw new Exception("no se puede leer el campo " + nameOfAttribute,
					e);
		}
	}

	@SuppressWarnings("unchecked")
	public static Class<? extends Entity> getClass(String clazz)
			throws Exception {
		try {
			return (Class<? extends Entity>) Class.forName("models." + clazz);
		} catch (ClassNotFoundException e) {
			throw new Exception("no se puede localizar la clase " + clazz);
		}
	}
	//
	// public class Util {
	//
	// public static void getValue(String nameOfAttribute) {
	// StringUtil.firstToUpper(nameOfAttribute)
	//
	// }
	// }

}
